package com.vanysoft.business.sys.service;

import com.vanysoft.business.sys.entity.Role;
import com.vanysoft.framework.config.database.BaseService;
import com.vanysoft.framework.config.database.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * 角色service
 *
 * @author qi_ma
 */
public interface RoleService extends BaseService<Role> {
    /**
     * 根据用户ID查询所有角色
     *
     * @param userId 用户ID
     * @return 角色列表
     */
    List<Role> selectByUserId(String userId);

    /**
     * 分页查询全部
     *
     * @param page 分页信息
     */
    PageInfo<Role> selectAll(PageInfo<Role> page);

    /**
     * 查询全部
     *
     * @param condition 查询条件
     * @return 角色集合
     */
    List<Role> selectAll(Map<String, Object> condition);

    /**
     * 根据角色ID和用户ID数组删除映射关系
     *
     * @param roleId  角色ID
     * @param userIds 用户ID数组
     * @return 是否成功
     */
    boolean deleteByRoleIdAndUserIds(String roleId, String[] userIds);

    /**
     * 批量删除角色
     *
     * @param ids id数组
     * @return 是否成功
     */
    boolean deleteByIds(String[] ids);

    /**
     * 增加角色用户
     *
     * @param roleId  角色ID
     * @param userIds 用户ID数组
     * @return 是否成功
     */
    boolean addRoleUsers(String roleId, String[] userIds);

    /**
     * 跟新角色组织机构信息
     *
     * @param roleId   角色ID
     * @param orgCodes 组织机构CODE数组
     * @return 是否成功
     */
    boolean updateOrgCodes(String roleId, String[] orgCodes);
}
